package com.atcd.springcloud.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;


import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.atcd.springcloud.entities.Payment;
import com.atcd.springcloud.entities.ResponseResult;
import com.atcd.springcloud.myhandler.CustomerBlockHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class RateLimitController {
    @GetMapping("/byResource")
    @SentinelResource(value = "byResource", blockHandler = "handleException")
    public ResponseResult byResource() {
        return new ResponseResult(200, "按资源名称限流测试OK", new Payment(2020L, "serial001"));
    }


    public ResponseResult handleException(BlockException exception) {
        return new ResponseResult(444, exception.getClass().getCanonicalName() + "\t 服务不可用");
    }



    @GetMapping("/rateLimit/customerBlockHandler")
    @SentinelResource(value = "customerBlockHandler",
            blockHandlerClass = CustomerBlockHandler.class,
            blockHandler = "handlerException2")
    public ResponseResult customerBlockHandler() {
        return new ResponseResult(200, "按客戶自定义", new Payment(2020L, "serial003"));
    }
}
 
